/*
 * Unidata Platform Community Edition
 * Copyright (c) 2013-2020, UNIDATA LLC, All rights reserved.
 * This file is part of the Unidata Platform Community Edition software.
 *
 * Unidata Platform Community Edition is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Unidata Platform Community Edition is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
 */

package org.unidata.mdm.system.configuration;

import org.apache.commons.lang3.StringUtils;
import org.unidata.mdm.system.module.SystemModule;

/**
 * @author Mikhail Mikhailov on Oct 7, 2019
 * This module contsants.
 */
public final class SystemConfigurationConstants {
    /**
     * The non-subject mark.
     */
    public static final String NON_SUBJECT = StringUtils.EMPTY;
    /**
     * Unidata system name.
     */
    public static final String SYSTEM_APLLICATION_NAME = "unidata";
    /**
     * Unidata system schema name.
     */
    public static final String SYSTEM_SCHEMA_NAME = "org_unidata_mdm_system";
    /**
     * Change log table name.
     */
    public static final String SYSTEM_MIGRATION_LOG_NAME = "system_change_log";
    /**
     * Change log table name.
     */
    public static final String SYSTEM_ACTIONS_MAP_NAME = "system-actions-map";
    /**
     * System executor service name.
     */
    public static final String SYSTEM_EXECUTOR_SERVICE_NAME = "system-executor-service";
    /**
     * Unidata default camel context name.
     */
    public static final String SYSTEM_CAMEL_CONTEXT = "unidata-camel-context";
    /**
     * Base configuration path.
     */
    public static final String PROPERTY_CONFIGURATION_PATH = "unidata.conf";
    // PROPERTIES start
    /**
     * BTM configuration properties prefix.
     * Not a part of properties framework.
     */
    public static final String PROPERTY_BITRONIX_PREFIX = SystemModule.MODULE_ID + ".bitronix.tm.";
    /**
     * System group.
     */
    public static final String PROPERTY_SYSTEM_GROUP = SystemModule.MODULE_ID + ".system.group";
    /**
     * Runtime profiler.
     */
    public static final String PROPERTY_SIMON_ENABLED = SystemModule.MODULE_ID + ".simon.enabled";
    /**
     * Current main platform version.
     */
    public static final String PROPERTY_PLATFORM_VERSION = SystemModule.MODULE_ID + ".platform.version";
    /**
     * Unidata node id property.
     */
    public static final String PROPERTY_NODE_ID = SystemModule.MODULE_ID + ".node.id";
    /**
     * Unidata dump target format property.
     */
    public static final String PROPERTY_DUMP_TARGET_FORMAT = SystemModule.MODULE_ID + ".dump.target.format";
    /**
     * Unidata system schema URL property name.
     */
    public static final String PROPERTY_DEFAULT_LOCALE = SystemModule.MODULE_ID + ".default.locale";
    /**
     * Unidata system dev mode indicator.
     */
    public static final String PROPERTY_DEVELOPER_MODE = SystemModule.MODULE_ID + ".developer.mode";
    /**
     * Default replay timeout (in millis).
     */
    public static final String PROPERTY_EVENT_REPLAY_TIMEOUT = SystemModule.MODULE_ID + ".event.replay.timeout";
    /**
     * Unidata system schema URL property name.
     * Not part of configuration properties.
     */
    public static final String PROPERTY_SYSTEM_DATASOURCE_URL = SystemModule.MODULE_ID + ".datasource.url";
    /**
     * Unidata system schema user property name.
     * Not part of configuration properties.
     */
    public static final String PROPERTY_SYSTEM_DATASOURCE_USER = SystemModule.MODULE_ID + ".datasource.username";
    /**
     * Unidata system schema password property name.
     * Not part of configuration properties.
     */
    public static final String PROPERTY_SYSTEM_DATASOURCE_PASSWORD = SystemModule.MODULE_ID + ".datasource.password";
    // Distributed cache (Hazelcast)
    /**
     * Unidata cache group.
     * Not part of runtim econfiguration properties.
     * Old unidata.cache.group
     */
    public static final String PROPERTY_SYSTEM_CACHE_GROUP = SystemModule.MODULE_ID + ".cache.group";
    /**
     * Unidata cache port.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.port
     */
    public static final String PROPERTY_SYSTEM_CACHE_PORT = SystemModule.MODULE_ID + ".cache.port";
    /**
     * Unidata cache port autoincrement.
     * Not part of runtime configuration properties.
     * Old unidata.cache.port.autoincreament
     */
    public static final String PROPERTY_SYSTEM_CACHE_PORT_AUTOINCREMENT = SystemModule.MODULE_ID + ".cache.port.autoincrement";
    /**
     * Unidata cache port autoincrement count.
     * Not part of runtime configuration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_PORT_COUNT = SystemModule.MODULE_ID + ".cache.port.count";
    /**
     * Unidata cache public address (overrides autobind).
     * Not part of runtime configuration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_PUBLIC_ADDRESS = SystemModule.MODULE_ID + ".cache.public.address";
    /**
     * Unidata cache outbound ports (overrides system management).
     * Not part of runtime configuration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_OUTBOUND_PORTS = SystemModule.MODULE_ID + ".cache.outbound.ports";
    /**
     * Unidata cache address reuse (restart without warning on port usage).
     * Not part of runtime configuration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_REUSE_ADDERSS = SystemModule.MODULE_ID + ".cache.reuse.address";
    /**
     * Unidata cache specific interfaces.
     * Not part of runtime configuration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_INTERFACES = SystemModule.MODULE_ID + ".cache.interfaces";
    /**
     * Unidata cache multicast enabled.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.multicast.enabled
     */
    public static final String PROPERTY_SYSTEM_CACHE_MULTICAST_ENABLED = SystemModule.MODULE_ID + ".cache.multicast.enabled";
    /**
     * Unidata cache multicast group.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.multicast.group
     */
    public static final String PROPERTY_SYSTEM_CACHE_MULTICAST_GROUP = SystemModule.MODULE_ID + ".cache.multicast.group";
    /**
     * Unidata cache multicast port.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.multicast.port
     */
    public static final String PROPERTY_SYSTEM_CACHE_MULTICAST_PORT = SystemModule.MODULE_ID + ".cache.multicast.port";
    /**
     * Unidata cache multicast TTL.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.multicast.ttl
     */
    public static final String PROPERTY_SYSTEM_CACHE_MULTICAST_TTL = SystemModule.MODULE_ID + ".cache.multicast.ttl";
    /**
     * Unidata cache multicast timeout (seconds).
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.multicast.timeout
     */
    public static final String PROPERTY_SYSTEM_CACHE_MULTICAST_TIMEOUT = SystemModule.MODULE_ID + ".cache.multicast.timeout";
    /**
     * Unidata cache multicast trusted interfaces.
     * Not part of runtime econfiguration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_MULTICAST_TRUSTED = SystemModule.MODULE_ID + ".cache.multicast.trusted";
    /**
     * Unidata cache TCP/IP enabled.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.tcp-ip.enabled
     */
    public static final String PROPERTY_SYSTEM_CACHE_TCP_IP_ENABLED = SystemModule.MODULE_ID + ".cache.tcp-ip.enabled";
    /**
     * Unidata cache TCP/IP members.
     * Not part of runtime econfiguration properties.
     * Old unidata.cache.tcp-ip.members
     */
    public static final String PROPERTY_SYSTEM_CACHE_TCP_IP_MEMBERS = SystemModule.MODULE_ID + ".cache.tcp-ip.members";
    /**
     * Unidata cache TCP/IP timeout (seconds).
     * Not part of runtime econfiguration properties.
     */
    public static final String PROPERTY_SYSTEM_CACHE_TCP_IP_TIMEOUT = SystemModule.MODULE_ID + ".cache.tcp-ip.timeout";
    /**
     * Enable tracing of camel messaging.
     * Old camel.trace.enable
     */
    public static final String PROPERTY_MESSAGING_TRACE_ENABLED = SystemModule.MODULE_ID + ".messaging.trace.enabled";
    /**
     * Camel bus group.
     */
    public static final String PROPERTY_MESSAGING_GROUP = SystemModule.MODULE_ID + ".messaging.group";
    /**
     * Initial pipelines.
     */
    public static final String PROPERTY_INITIAL_PIPELINES = SystemModule.MODULE_ID + ".initial.pipelines";
    /**
     * Constructor.
     */
    private SystemConfigurationConstants() {
        super();
    }

}
